1. Field of the Invention
The present disclosure relates generally to computer system memory management, and, in particular, to preemptive page eviction in computer system memory.
2. Description of Background
Computer system memory management techniques typically seek to improve overall processing throughput by managing memory utilization. When multiple levels of memory (e.g., processor cache, main memory, and secondary storage) are available to store program code and/or data, it is generally preferable to store frequently accessed items in the fastest available memory type. Memory can be organized as pages, with memory management performed over multiple pages for a software process. An operating system may track which pages are active as a working set for the software process being executed. Memory managers attempt to swap pages in and out of various levels of memory to improve both speed and accessibility.
Memory managers often employ time-based algorithms to determine which code or data segments should be allocated to faster memory versus slower memory. One commonly used algorithm is least recently used (LRU), which tracks aging information to determine what to swap out over a period of time. Another approach is least frequently used (LFU), which determines access frequency of items and swaps out infrequently accessed items as established via time based monitoring of access patterns. While multiple memory management algorithms exist, many such algorithms require a large amount of computational and storage overhead. Predictive memory management algorithms often rely on monitoring access patterns to manage the contents of pages at different levels of memory. Due to a lack of a priori knowledge about the contents of memory pages, memory managers can make poor decisions that allow infrequently accessed information to be placed in faster memory for long durations of time, as it is initially unknown as to whether the information will be frequently or infrequently accessed.
While writing a software application, a programmer may be able to identify regions of code that are likely to be infrequently accessed. It would be beneficial to relay such information to a memory manager, enabling the memory manager to perform more efficiently. Support for a markup methodology to identify infrequently accessed regions of code would enable the memory manager to preemptively evict pages to a lower level of memory (e.g., secondary storage), thereby preventing infrequently accessed code/data from occupying valuable storage resources in a higher level of memory (e.g., main memory) for extended period of time. Accordingly, there is a need in the art for preemptive page eviction in computer system memory.